const Koa = require("koa");
const bodyParser = require("koa-bodyparser");
const router = require("./router");
const { connectDB } = require("./mongo"); // 引入数据库连接模块
const cron = require("node-cron"); // 定时任务模块
const deleteOldData = require("./router/deleteOldData"); // 引入删除旧数据的模块

const app = new Koa();

app.use(
  bodyParser({
    jsonLimit: "100mb", // 设置 JSON 数据的大小限制
    formLimit: "100mb", // 设置 URL编码的数据的大小限制
    enableTypes: ["json", "form", "text"],
    extendTypes: {
      json: ["application/x-javascript"], // 你可以根据需要扩展类型
    },
  })
);

// 设置跨域头部
const cors = async (ctx, next) => {
  ctx.set("Access-Control-Allow-Origin", "*"); // 允许所有域名
  ctx.set("Access-Control-Allow-Methods", "GET, POST, OPTIONS");
  ctx.set("Access-Control-Allow-Headers", "Content-Type, Accept");

  if ("OPTIONS" === ctx.method) {
    ctx.body = 204;
  } else {
    await next();
  }
};

// 使用CORS中间件
app.use(cors);

// 使用 bodyParser 中间件来解析请求体
app.use(bodyParser());

// 连接到 MongoDB
// connectDB();

router.forEach((route) => {
  // 使用抽离的 router 中间件
  app.use(route.routes()).use(route.allowedMethods());
});

// 启动定时任务，每天凌晨12点执行一次
cron.schedule("0 0 * * *", async () => {
  await deleteOldData();
});

// 监听端口 9999
app.listen(9999, () => {
  console.log("Server is running on http://localhost:9999");
});
